package main.chapter3.statics

class Latitude private constructor(val value: Double) {
    //伴生对象，相当于Java中的类对象
    companion object {
        //加上注释在Java中调用就可以和Kotlin中一样
        @JvmStatic
        fun ofDouble(double: Double): Latitude {
            return Latitude(double)
        }

        fun ofLatitude(latitude: Latitude): Latitude {
            return Latitude(latitude.value)
        }

        //加上这个之后Java中访问可以与Kotlin一样，const也有同样效果
        @JvmField
        val state = 3
        const val TAG = "Latitude"
    }
}

fun main(args: Array<String>) {
    val latitude = Latitude.ofDouble(3.0)
    val latitudeCopy = Latitude.ofLatitude(latitude)
    println(Latitude.TAG)
    println(Latitude.state)
}